<?php

// verificar se o IP que está tentando acessar a página não está em nossa blocklist
 $ipsbloqueados = array( "10.0.0.1" );
 foreach ( $ipsbloqueados as $ip ) {
     if ( $ip == $_SERVER[ 'REMOTE_ADDR' ] ) {
         // redireciona o usuário para a página de acesso negado
         header( "Location: /cursophp/app/negado.php" );
         exit();
     }
 }
// área de includes obrigatórios
 require_once("libs/funcoes.php");
 require_once("application.php");

// previne o cache nas página
 header( "Expires: Mon, 21 Out 1999 00:00:00 GMT" );
 header( "Cacho-control: no-cache" );
 header( "Pragma: no-cache" );

// variável m = módulo que será acessado
 $modulo = (isset( $_GET[ 'm' ] )) ? tStr( $_GET[ 'm' ] ) : 'inicial';

// Controlar o front-end
// página inicial, abrir um post ou página de contato

 switch ( $modulo ) {
     case "admin" :
         $app = new App();
         // verifica se está logado
         session_start();
          if ( isset( $_SESSION[ "usuarios" ] ) ) {
             $comp   = (isset( $_GET[ 'c' ] )) ? tStr( $_GET[ 'c' ] ) : null;
             $action = (isset( $_GET[ 'a' ] )) ? tStr( $_GET[ 'a' ] ) : null;

                                 switch ( $comp ) {
                                     case "setor" :
                                         // caso o componente solicitado seja o componente de controle de usuários
                                         include("app/controller/setor_c.class.php");

                                         $setor = new Setor_c();
                                         if ( $action != null ) {
                                             $setor->$action( $app );
                                         }
                                         else {
                                             $setor->listarSetor( $app );
                                         }

                                         break;
                                     case "funcao" :
                                         // caso o componente solicitado seja o componente de controle de usuários
                                         include("app/controller/funcao_c.class.php");

                                         $funcao = new Funcao_c();
                                         if ( $action != null ) {
                                             $funcao->$action( $app );
                                         }
                                         else {
                                             $funcao->listarFuncao( $app );
                                         }

                                         break;

                                     case "colaborador" :
                                         // caso o componente solicitado seja o componente de controle de usuários
                                         include("app/controller/colaborador_c.class.php");

                                         $colaborador = new Colaborador_c();
                                         if ( $action != null ) {
                                             $colaborador->$action( $app );
                                         }
                                         else {
                                             $colaborador->listarColaborador( $app );
                                         }

                                         break;
                                     case "usuario" :
                                         
                                        
                                         // caso o componente solicitado seja o componente de controle de usuários
                                         include("app/controller/usuario.class.php");

                                         $usuario = new Usuario();
                                         if ( $action != null ) {
                                             $usuario->$action( $app );
                                             print_r($usuario);
                                         }
                                         else {
                                            
                                             $usuario->listarUsuarios( $app );
                                         }

                                         break;
                                     default :
                                         renderizaAdminInicial( $app );
                                         break;
                                 }
         }
         else {
             renderizaLogin( $app );
         }

         break;
     case "doLogin":
         $app     = new App();
         $admin   = $app->loadModel( "Admin" );
         $usuario = tStr( $_POST[ "usuario" ] );
         $senha   = md5( tStr( $_POST[ "senha" ] ) );

         $obj = $admin->getUsuarioLoginSenha( $app->conexao, $usuario, $senha );

         if ( $obj ) {
             // efetuou login
             session_start();
             $_SESSION[ "usuarioid" ]   = $obj->idusuario;
             $_SESSION[ "usuarios" ]     = $obj->usuarionome;
             $_SESSION[ "usuarionome" ] = $obj->usuariologin;
             renderizaAdminInicial( $app );
         }
         else {
             // login falhou
             echo "<script>alert('Login ou senha incorreto(s)');</script>";
             renderizaLogin( $app );
         }

         break;
     case "logout" :
         $app = new App();

         session_start();
         session_destroy();

         echo "<script>alert('Usuário desconectado com sucesso!');</script>";
         //renderizaLogin($app);
        $app  = new App();
         $site = $app->loadModel( "Site" );

         // vamos carregar os posts da página inicial
         $obj           = $site->listaColaborador( $app->conexao, 0 );
         $colaboradores = $obj->fetchAll( PDO::FETCH_ASSOC );

         $obj     = $site->listaSetor( $app->conexao, 0 );
         $setores = $obj->fetchAll( PDO::FETCH_ASSOC );
         
         renderizaPaginaInicial( $app, $colaboradores, $setores );

         
         break;


     case "setor" :

         $app  = new App();
         $site = $app->loadModel( "Site" );

         // vamos carregar os posts da página inicial
         $obj           = $site->listaColaborador( $app->conexao, ( int ) $_GET[ 'id' ] );
         $colaboradores = $obj->fetchAll( PDO::FETCH_ASSOC );

         $obj     = $site->listaSetor( $app->conexao, 0 );
         $setores = $obj->fetchAll( PDO::FETCH_ASSOC );

         renderizaPaginaInicial( $app, $colaboradores, $setores );

         break;
     default :
         $app  = new App();
         $site = $app->loadModel( "Site" );

         // vamos carregar os posts da página inicial
         $obj           = $site->listaColaborador( $app->conexao, 0 );
         $colaboradores = $obj->fetchAll( PDO::FETCH_ASSOC );

         $obj     = $site->listaSetor( $app->conexao, 0 );
         $setores = $obj->fetchAll( PDO::FETCH_ASSOC );

         renderizaPaginaInicial( $app, $colaboradores, $setores );

         break;
 }

 function renderizaAdminInicial( $app ) {
     
         $app  = new App();
         $site = $app->loadModel( "Site" );

         // vamos carregar os posts da página inicial
         $obj           = $site->listaColaborador( $app->conexao, 0 );
         $colaboradores = $obj->fetchAll( PDO::FETCH_ASSOC );

         $obj     = $site->listaSetor( $app->conexao, 0 );
         $setores = $obj->fetchAll( PDO::FETCH_ASSOC );
     $param = array( "titulo" => $app->site_titulo );
     $app->loadView( "Admin", $param );
 }

 function renderizaPaginaInicial( $app, $colaboradores, $setores ) {
     $param = array( "titulo"  => $app->site_titulo,
             "pagina"  => "inicial",
             "inicial" => array(
                     "colaborador" => $colaboradores,
                     "setor"       => $setores
             ) );

     $app->loadView( "Site", $param );
 }

 function renderizaLogin( $app ) {
     $param = array( "titulo" => $app->site_titulo );
     $app->loadView( "Login", $param );
 }
 